// 修正后的数据解析逻辑
const fs = require('fs');

// 修正后的extractOrdersFromPluginData函数
function extractOrdersFromPluginData(item) {
  try {
    // 检查数据结构
    if (!item || !item.response || !item.response.data) {
      console.log('[PluginData] 插件数据格式不正确，缺少response.data');
      return [];
    }
    
    // 如果response.data是字符串，则解析它
    let responseData = item.response.data;
    if (typeof responseData === 'string') {
      try {
        responseData = JSON.parse(responseData);
      } catch (parseError) {
        console.log('[PluginData] 插件数据格式不正确，无法解析response.data');
        return [];
      }
    }
    
    // 检查是否为订单数据格式 - 修正嵌套结构
    let orderDataArray = [];
    if (Array.isArray(responseData)) {
      // 如果是数组，遍历查找包含订单数据的项
      for (const dataItem of responseData) {
        if (dataItem.data && Array.isArray(dataItem.data)) {
          orderDataArray = orderDataArray.concat(dataItem.data);
        }
      }
    } else if (responseData.data && Array.isArray(responseData.data)) {
      // 如果是对象且包含data数组
      orderDataArray = responseData.data;
    }
    
    if (orderDataArray.length === 0) {
      console.log('[PluginData] 订单数据格式不正确，未找到有效的订单数据数组');
      console.log('实际的数据结构:', JSON.stringify(responseData, null, 2));
      return [];
    }
    
    console.log(`找到 ${orderDataArray.length} 条订单数据，开始提取...`);
    
    // 提取订单数据
    const orders = orderDataArray.map(orderItem => {
      // 获取订单基本信息
      const order = orderItem.order || {};
      
      // 获取订单项
      const items = orderItem.items || [];
      
      return {
        // 订单基本信息
        platformOrderId: order.id,  // 平台订单ID
        customerId: order.purchaserId,  // 客户ID
        orderAmount: parseFloat(order.orderTotalFee) || 0,  // 订单金额
        orderStatus: mapOrderStatus(order.status),  // 订单状态
        orderDate: order.createdAt ? new Date(order.createdAt) : new Date(),  // 订单日期
        platformSource: order.platformSource || 'zcy',  // 平台来源
        invoiceStatus: mapInvoiceStatus(order.invoiceStatus),  // 开票状态
        invoiceDate: order.invoiceDate ? new Date(order.invoiceDate) : null,  // 开票日期
        responsibleSalesman: order.responsibleSalesman || '',  // 负责销售
        isGift: order.isGift === 1,  // 是否含赠品
        collectionStatus: order.collectionStatus || 'pending',  // 催款状态
        collectionCount: parseInt(order.collectionCount) || 0,  // 催款次数
        lastCollectionDate: order.lastCollectionDate ? new Date(order.lastCollectionDate) : null,  // 最后催款日期
        lastCollectionResult: order.lastCollectionResult || '',  // 最后催款结果
        nextFollowupDate: order.nextFollowupDate ? new Date(order.nextFollowupDate) : null,  // 下次跟进日期
        orderNo: order.orderNo || '',  // 订单编号
        
        // 订单项
        items: items.map(item => ({
          productId: item.itemId,  // 产品ID
          productName: item.itemName,  // 产品名称
          specification: extractSpecification(item.attributes),  // 规格
          quantity: parseInt(item.quantity) || 0,  // 数量
          unit: extractUnit(item.extraMap),  // 单位
          unitPrice: parseFloat(item.skuPrice) || 0,  // 单价
          amount: parseFloat(item.amount) || 0,  // 金额
          remark: item.remark || ''  // 备注
        }))
      };
    });
    
    console.log(`成功提取 ${orders.length} 条订单数据`);
    return orders;
  } catch (error) {
    console.error('[PluginData] 提取订单数据失败:', error);
    return [];
  }
}

// 映射订单状态
function mapOrderStatus(status) {
  // 政采云订单状态映射
  const statusMap = {
    '1': 'pending',      // 待处理
    '3': 'shipped',      // 已发货
    '4': 'completed',    // 已完成
    '-5': 'cancelled',   // 已取消
    '5': 'completed'     // 已验收
  };
  
  return statusMap[status] || 'pending';
}

// 映射开票状态
function mapInvoiceStatus(status) {
  // 政采云开票状态映射
  const statusMap = {
    'uninvoiced': 'uninvoiced',  // 未开票
    'invoiced': 'invoiced',      // 已开票
    'sent': 'sent'               // 已寄送
  };
  
  return statusMap[status] || 'uninvoiced';
}

// 提取规格信息
function extractSpecification(attributes) {
  if (!attributes || !Array.isArray(attributes)) {
    return '';
  }
  
  return attributes.map(attr => `${attr.key}:${attr.value}`).join('; ');
}

// 提取单位信息
function extractUnit(extraMap) {
  if (!extraMap) {
    return '';
  }
  
  return extraMap.unit || '';
}

// 测试数据
const testData = {
  "id": "req_1763969899562_2ha10giw5",
  "url": "/api/mall/order/list",
  "method": "POST",
  "timestamp": "2025-11-24T15:55:00.000Z",
  "request": {},
  "response": {
    "data": [
      {
        "data": [
          {
            "order": {
              "id": "ORDER_002",
              "purchaserId": "CUSTOMER_002",
              "orderTotalFee": "2000.00",
              "status": "4",
              "createdAt": "2025-11-24T15:55:00.000Z",
              "platformSource": "zcy",
              "invoiceStatus": "invoiced"
            },
            "items": [
              {
                "itemId": "ITEM_002",
                "itemName": "产品2",
                "quantity": "4",
                "skuPrice": "500.00",
                "amount": "2000.00"
              }
            ]
          }
        ]
      }
    ]
  },
  "ruleInfo": {},
  "processedAt": "2025-11-24T07:38:19.562Z",
  "category": "sales_order",
  "status": "pending"
};

console.log('开始测试修正后的数据解析...');
const result = extractOrdersFromPluginData(testData);
console.log('解析结果:', JSON.stringify(result, null, 2));// 修正后的数据解析逻辑
const fs = require('fs');

// 修正后的extractOrdersFromPluginData函数
function extractOrdersFromPluginData(item) {
  try {
    // 检查数据结构
    if (!item || !item.response || !item.response.data) {
      console.log('[PluginData] 插件数据格式不正确，缺少response.data');
      return [];
    }
    
    // 如果response.data是字符串，则解析它
    let responseData = item.response.data;
    if (typeof responseData === 'string') {
      try {
        responseData = JSON.parse(responseData);
      } catch (parseError) {
        console.log('[PluginData] 插件数据格式不正确，无法解析response.data');
        return [];
      }
    }
    
    // 检查是否为订单数据格式 - 修正嵌套结构
    let orderDataArray = [];
    if (Array.isArray(responseData)) {
      // 如果是数组，遍历查找包含订单数据的项
      for (const dataItem of responseData) {
        if (dataItem.data && Array.isArray(dataItem.data)) {
          orderDataArray = orderDataArray.concat(dataItem.data);
        }
      }
    } else if (responseData.data && Array.isArray(responseData.data)) {
      // 如果是对象且包含data数组
      orderDataArray = responseData.data;
    }
    
    if (orderDataArray.length === 0) {
      console.log('[PluginData] 订单数据格式不正确，未找到有效的订单数据数组');
      console.log('实际的数据结构:', JSON.stringify(responseData, null, 2));
      return [];
    }
    
    console.log(`找到 ${orderDataArray.length} 条订单数据，开始提取...`);
    
    // 提取订单数据
    const orders = orderDataArray.map(orderItem => {
      // 获取订单基本信息
      const order = orderItem.order || {};
      
      // 获取订单项
      const items = orderItem.items || [];
      
      return {
        // 订单基本信息
        platformOrderId: order.id,  // 平台订单ID
        customerId: order.purchaserId,  // 客户ID
        orderAmount: parseFloat(order.orderTotalFee) || 0,  // 订单金额
        orderStatus: mapOrderStatus(order.status),  // 订单状态
        orderDate: order.createdAt ? new Date(order.createdAt) : new Date(),  // 订单日期
        platformSource: order.platformSource || 'zcy',  // 平台来源
        invoiceStatus: mapInvoiceStatus(order.invoiceStatus),  // 开票状态
        invoiceDate: order.invoiceDate ? new Date(order.invoiceDate) : null,  // 开票日期
        responsibleSalesman: order.responsibleSalesman || '',  // 负责销售
        isGift: order.isGift === 1,  // 是否含赠品
        collectionStatus: order.collectionStatus || 'pending',  // 催款状态
        collectionCount: parseInt(order.collectionCount) || 0,  // 催款次数
        lastCollectionDate: order.lastCollectionDate ? new Date(order.lastCollectionDate) : null,  // 最后催款日期
        lastCollectionResult: order.lastCollectionResult || '',  // 最后催款结果
        nextFollowupDate: order.nextFollowupDate ? new Date(order.nextFollowupDate) : null,  // 下次跟进日期
        orderNo: order.orderNo || '',  // 订单编号
        
        // 订单项
        items: items.map(item => ({
          productId: item.itemId,  // 产品ID
          productName: item.itemName,  // 产品名称
          specification: extractSpecification(item.attributes),  // 规格
          quantity: parseInt(item.quantity) || 0,  // 数量
          unit: extractUnit(item.extraMap),  // 单位
          unitPrice: parseFloat(item.skuPrice) || 0,  // 单价
          amount: parseFloat(item.amount) || 0,  // 金额
          remark: item.remark || ''  // 备注
        }))
      };
    });
    
    console.log(`成功提取 ${orders.length} 条订单数据`);
    return orders;
  } catch (error) {
    console.error('[PluginData] 提取订单数据失败:', error);
    return [];
  }
}

// 映射订单状态
function mapOrderStatus(status) {
  // 政采云订单状态映射
  const statusMap = {
    '1': 'pending',      // 待处理
    '3': 'shipped',      // 已发货
    '4': 'completed',    // 已完成
    '-5': 'cancelled',   // 已取消
    '5': 'completed'     // 已验收
  };
  
  return statusMap[status] || 'pending';
}

// 映射开票状态
function mapInvoiceStatus(status) {
  // 政采云开票状态映射
  const statusMap = {
    'uninvoiced': 'uninvoiced',  // 未开票
    'invoiced': 'invoiced',      // 已开票
    'sent': 'sent'               // 已寄送
  };
  
  return statusMap[status] || 'uninvoiced';
}

// 提取规格信息
function extractSpecification(attributes) {
  if (!attributes || !Array.isArray(attributes)) {
    return '';
  }
  
  return attributes.map(attr => `${attr.key}:${attr.value}`).join('; ');
}

// 提取单位信息
function extractUnit(extraMap) {
  if (!extraMap) {
    return '';
  }
  
  return extraMap.unit || '';
}

// 测试数据
const testData = {
  "id": "req_1763969899562_2ha10giw5",
  "url": "/api/mall/order/list",
  "method": "POST",
  "timestamp": "2025-11-24T15:55:00.000Z",
  "request": {},
  "response": {
    "data": [
      {
        "data": [
          {
            "order": {
              "id": "ORDER_002",
              "purchaserId": "CUSTOMER_002",
              "orderTotalFee": "2000.00",
              "status": "4",
              "createdAt": "2025-11-24T15:55:00.000Z",
              "platformSource": "zcy",
              "invoiceStatus": "invoiced"
            },
            "items": [
              {
                "itemId": "ITEM_002",
                "itemName": "产品2",
                "quantity": "4",
                "skuPrice": "500.00",
                "amount": "2000.00"
              }
            ]
          }
        ]
      }
    ]
  },
  "ruleInfo": {},
  "processedAt": "2025-11-24T07:38:19.562Z",
  "category": "sales_order",
  "status": "pending"
};

console.log('开始测试修正后的数据解析...');
const result = extractOrdersFromPluginData(testData);
console.log('解析结果:', JSON.stringify(result, null, 2));